package com.zsj.queue;

/**
 * @Author zsj
 * @Version 1.0
 * @Date 2024/3/25 16:59
 * @Description
 */
public interface Deque<E> {

    /**
     * 添加元素到头部
     *
     * @param value 添加的元素
     * @return 添加成功true 失败false
     */
    boolean offerFirst(E value);

    /**
     * 添加元素到尾部
     *
     * @param value 添加的元素
     * @return 添加成功true 失败false
     */
    boolean offerEnd(E value);

    /**
     * 获取头部元素并剔除
     * @return 头部元素值
     */
    E poolFirst();

    /**
     * 获取尾部元素并剔除
     * @return 尾部元素值
     */
    E pollLast();

    /**
     * 获取头部元素
     * @return 头部元素值
     */
    E peekFirst();

    /**
     * 获取尾部元素
     * @return 尾部元素值
     */
    E peekLast();

    /**
     * 判断队列是否为空
     * @return true为空 false不为空
     */
    boolean isEmpty();

    /**
     * 判断队列是否已满
     * @return true已满 false未满
     */
    boolean isFull();
}
